Ext.namespace('Divo');
Ext.namespace('Divo.app');

Divo.app.ManageList = function() {
  var u_grid;
  var db_grid;
  var init_grid;
  var init3_grid;
  var grid4;
  var viewport;
  var toolbar, toolbar_3, toolbar2, toolbar3, toolbar4;

  function createGrid() {
    // on line users
    var cmudb = new Ext.grid.ColumnModel([{
          header : '用户名',
          dataIndex : 'userName',
          width : 120
        }, {
          header : 'ip',
          dataIndex : 'ip',
          width : 100
        }, {
          header : '登录时间',
          dataIndex : 'loginTime',
          width : 150
        }])

    var studb = new Ext.data.JsonStore({
          fields : ['userName', 'ip', 'loginTime'],
          proxy : new Ext.data.HttpProxy({
                url : 'system/get_online_users',
                timeout : 300000
              }),
          root : 'datas',
          totalProperty : 'totalCount'
        });

    u_grid = new Ext.grid.GridPanel({
          region : 'center',
          loadMask : {
            msg : "正在统计..."
          },
          title : '在线用户',
          store : studb,
          cm : cmudb,
          stripeRows : true,
          height : 160,
          width : 400
        });

    // datasource
    var cmdb = new Ext.grid.ColumnModel([{
          header : '连接',
          dataIndex : 'name',
          width : 150
        }, {
          header : '最大连接',
          dataIndex : 'max',
          width : 80
        }, {
          header : '当前连接',
          dataIndex : 'active',
          width : 80
        }, {
          header : '空闲连接',
          dataIndex : 'idle',
          width : 80
        }])

    var stdb = new Ext.data.JsonStore({
          fields : ['name', 'msg', 'success', 'max', 'active', 'idle'],
          proxy : new Ext.data.HttpProxy({
                url : 'common/datasource',
                timeout : 300000
              }),
          root : 'datas',
          totalProperty : 'totalCount'
        });

    db_grid = new Ext.grid.GridPanel({
          region : 'center',
          loadMask : {
            msg : "正在统计..."
          },
          title : '数据库连接',
          store : stdb,
          cm : cmdb,
          stripeRows : true,
          height : 160,
          width : 400
        });

    // 初始系统
    var cm = new Ext.grid.ColumnModel([{
          header : '信息',
          dataIndex : 'msg',
          width : 300
        }, {
          header : '状态',
          dataIndex : 'success',
          renderer : function num(val) {
            if (val) {
              return '<span style="color:green;">成功</span>';
            } else {
              return '<span style="color:red;">失败</span>';
            }
          }
        }])

    var st = new Ext.data.JsonStore({
          fields : ['name', 'msg', 'success'],
          proxy : new Ext.data.HttpProxy({
                url : 'common/init',
                timeout : 300000
              }),
          root : 'datas',
          totalProperty : 'totalCount'
        });

    init_grid = new Ext.grid.GridPanel({
          region : 'center',
          loadMask : {
            msg : "正在初始化..."
          },
          region : 'center',
          store : st,
          cm : cm,
          viewConfig : {
            forceFit : true
          }
        });

    // 物流宝初始
    var cm3 = new Ext.grid.ColumnModel([{
          header : '信息',
          dataIndex : 'msg',
          width : 300
        }, {
          header : '状态',
          dataIndex : 'success',
          renderer : function num(val) {
            if (val) {
              return '<span style="color:green;">成功</span>';
            } else {
              return '<span style="color:red;">失败</span>';
            }
          }
        }])

    var st3 = new Ext.data.JsonStore({
          fields : ['name', 'msg', 'success'],
          proxy : new Ext.data.HttpProxy({
                url : 'common/init3',
                timeout : 300000
              }),
          root : 'datas',
          totalProperty : 'totalCount'
        });

    init3_grid = new Ext.grid.GridPanel({
          region : 'center',
          loadMask : {
            msg : "正在初始化物流宝系统..."
          },
          region : 'center',
          store : st3,
          cm : cm3,
          viewConfig : {
            forceFit : true
          }
        });

    // 后台脚本升级
    var cm2 = new Ext.grid.ColumnModel([{
          header : '信息',
          dataIndex : 'msg',
          width : 300
        }, {
          header : '状态',
          dataIndex : 'success',
          renderer : function num(val) {
            if (val) {
              return '<span style="color:green;">成功</span>';
            } else {
              return '<span style="color:red;">失败</span>';
            }
          }
        }])

    var st2 = new Ext.data.JsonStore({
          fields : ['name', 'msg', 'success'],
          proxy : new Ext.data.HttpProxy({
                url : 'migration/process_migrations',
                timeout : 300000
              }),
          root : 'datas',
          totalProperty : 'totalCount'
        });

    grid4 = new Ext.grid.GridPanel({
          region : 'center',
          loadMask : {
            msg : "正在更新后台脚本..."
          },
          region : 'center',
          store : st2,

          cm : cm2,
          viewConfig : {
            forceFit : true
          }
        });

  };

  var showMigrationBtn = function() {
    Ext.Ajax.request({
          url : "/migration/get_migrations",
          callback : function(o, s, r) {
            var respText = Ext.decode(r.responseText);
            if (respText.success) {
              if (respText.count != 0) {
                Ext.get('migration-btn').dom.disabled = false;
              } else {
                Ext.get('migration-btn').dom.disabled = true;
              }

            }
          }
        });
  }

  // 创建layout
  function createLayout() {
    toolbar = new Ext.Toolbar({
          items : [{
                text : "系统升级更新",
                icon : "resources/img/settings.png",
                id : "tlb_update",
                handler : function() {
                  init_grid.getStore().load();
                }
              }]
        });

    toolbar_3 = new Ext.Toolbar({
          items : [{
                text : "物流宝升级更新",
                icon : "resources/img/settings.png",
                id : "tlb_update",
                handler : function() {
                  init3_grid.getStore().load();
                }
              }]
        });

    toolbar2 = new Ext.Toolbar({
          items : [{
                text : "升级脚本更新",
                icon : "resources/img/settings.png",
                id : "tlb_migration",
                handler : function() {
                  grid4.getStore().load();
                }
              }]
        });

    toolbar3 = new Ext.Toolbar({
          items : [{
                text : "数据库连接数",
                icon : "resources/img/import.gif",
                id : "tlb_db",
                handler : function() {
                  db_grid.getStore().load();
                }
              }]
        });

    toolbar4 = new Ext.Toolbar({
          items : [{
                text : "在线人数",
                icon : "resources/img/fam.icons/group.png",
                id : "tlb_user",
                handler : function() {
                  u_grid.getStore().load();
                }
              }]
        });

    var viewport = new Ext.Viewport({
          layout : 'border',
          items : [{
                layout : 'border',
                region : 'center',
                border : false,
                items : [{
                      layout : 'border',
                      region : 'center',
                      border : false,
                      height : 200,
                      items : [{
                            layout : 'fit',
                            region : 'north',
                            border : false,
                            items : [toolbar],
                            height : 25
                          }, {
                            layout : 'border',
                            region : 'center',
                            border : false,
                            items : [init_grid]
                          }]
                    }]
              }, {
                layout : 'border',
                region : 'east',
                width : 500,
                border : false,
                items : [{
                      layout : 'border',
                      region : 'north',
                      border : false,
                      height : 300,
                      items : [{
                            layout : 'fit',
                            region : 'north',
                            border : false,
                            items : [toolbar3],
                            height : 25
                          }, {
                            layout : 'border',
                            region : 'center',
                            border : false,
                            items : [db_grid]
                          }]
                    }, {
                      layout : 'border',
                      region : 'center',
                      border : false,
                      items : [{
                            layout : 'fit',
                            region : 'north',
                            border : false,
                            items : [toolbar4],
                            height : 25
                          }, {
                            layout : 'border',
                            region : 'center',
                            border : false,
                            items : [u_grid]
                          }]
                    }]
              }]

        });

    viewport.doLayout();
  }

  /* ----------------------- public方法 ----------------------- */
  return {
    /**
     * 初始化
     */
    init : function() {
      createGrid();
      createLayout();

      u_grid.getStore().load();
      db_grid.getStore().load();
      toolbar2.items.get("tlb_migration").disable();
    }
  }
}();

Ext.onReady(Divo.app.ManageList.init, Divo.app.ManageList, true);
